Skip to main content

App Open

warning

This is the documentation for the Advanced API. Most developers should use our Simplified API (documented in App Open), which comes with several built-in features such as:

  • Automatic ad loading
  • Retries for failed requests
  • Simplified lifecycle management

Only use the Advanced API if you need fine-grained control over the ad loading and presentation lifecycle.

The Advanced API provides direct access to individual AppOpen instances, giving you complete control over when and how ads are loaded and displayed.

Create an AppOpen instance

val appOpen = AppOpen.create(activity, "<placement-id>")

Register ad callbacks

appOpen.listener = object : AppOpen.Listener {
override fun onLoaded(loadResult: LoadResult) {
Log.d("AppOpen", "App Open loaded!")
}

override fun onFailedToLoad(loadError: LoadError, loadResult: LoadResult?) {
Log.d("AppOpen", "App Open failed to load. Reason: ${loadError.message}")
}

override fun onShowed() {
Log.d("AppOpen", "App Open shown!")
}

override fun onFailedToShow(showError: ShowError) {
Log.d("AppOpen", "App Open failed to show. Reason: ${showError.message}")
}

override fun onDismissed() {
Log.d("AppOpen", "App Open dismissed!")
}

override fun onImpression(impressionData: ImpressionData) {
Log.d("AppOpen", "App Open impression, with revenue: ${impressionData.revenue}")
}
}

Load an ad

appOpen.load()

Show an ad

if (appOpen.isReady) {
appOpen.show(activity, "app-open-ad-space")
}

Complete example

AppOpenAdvancedSample.kt
import android.app.Activity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import com.etermax.xmediator.core.api.AppOpen
import com.etermax.xmediator.core.api.entities.*

class AppOpenAdvancedSample : Activity() {
private var appOpen: AppOpen? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app_open_advanced)

findViewById<Button>(R.id.button_load).setOnClickListener {
appOpen?.destroy()
appOpen = AppOpen.create(this, "<placement-id>").apply {
listener = appOpenListener
load()
}
}

findViewById<Button>(R.id.button_show).setOnClickListener {
if (appOpen?.isReady == true) {
appOpen?.show(this, "app-open-ad-space")
}
}
}

private val appOpenListener = object : AppOpen.Listener {
override fun onLoaded(loadResult: LoadResult) {
Log.d("AppOpenAdvanced", "Loaded!")
}

override fun onFailedToLoad(loadError: LoadError, loadResult: LoadResult?) {
Log.d("AppOpenAdvanced", "Failed to load: ${loadError.message}")
}

override fun onShowed() {
Log.d("AppOpenAdvanced", "Shown!")
}

override fun onFailedToShow(showError: ShowError) {
Log.d("AppOpenAdvanced", "Failed to show: ${showError.message}")
}

override fun onDismissed() {
Log.d("AppOpenAdvanced", "Dismissed!")
}

override fun onImpression(impressionData: ImpressionData) {
Log.d("AppOpenAdvanced", "Impression with revenue: ${impressionData.revenue}")
}
}
}